常见的API安全漏洞类型有哪些
常见的API安全漏洞类型有以下这些:
未受保护API:在现行的Open API开放平台中,一般需要对第三方厂商的API接入身份进行监管和审核,通过准入审核机制来保护API。当某个API因未受保护而被攻破后,会直接导致对内部应用程序或内部API的攻击。比如因REST、SOAP保护机制不全使攻击者透明地访问后端系统即属于此类。
弱身份鉴别:当API暴露给公众调用时,为了保障用户的可信性,必须对调用用户进行身份认证。因设计缺陷导致对用户身份的鉴别和保护机制不全而被攻击,比如弱密码、硬编码、暴力破解等。
中间人劫持:因API的通信链路安全机制不全,攻击者通过攻击手段将自己成为API链中的某个受信任链,从而拦截数据以进行数据篡改或加密卸载。此类攻击,通常发生在网络链路层。
传统Web攻击:在这里主要是指传统Web攻击类型,通过攻击HTTP协议中不同的参数,来达到攻击目的,比如SQL注入、LDAP注入、XXE等。而攻击者在进一步攻击中,会利用权限控制缺失、CSRF进行横向移动,从而获取更大的战果。
弱会话控制:有时API身份鉴别没有问题,但对会话过程安全保护不足,比如会话令牌(Cookie、一次性URL、SAML令牌和OAuth令牌)的保护。会话令牌是使API服务器知道谁在调用它的主要(通常是唯一的)方法,如果令牌遭到破坏、重放或被欺骗,API服务器很难区分是否是恶意攻击行为。
反向控制:与传统的交互技术不同,API通常连接着两端。传统的应用中大多数安全协议都认为信任服务器端是可信的,而在API中,服务器端和客户端都不可信。如果服务器端被控制,则反向导致调用API的客户端出现安全问题,这是此类安全问题出现的原因。
框架攻击:在API安全威胁中,有一些特殊存在的攻击场景,它们是API规范、架构设计导致的安全问题,这类威胁统称为框架攻击。最常见的比如同一API存在不同版本,导致攻击者攻击低版本API漏洞;同一API的不同客户端调用,可能PC端没有安全问题而移动端存在安全问题等。
加强API安全的措施有以下这些:
数据加密:必须对数据加密,常见的做法对关键字段加密比如用户密码直接通过md5加密,现在主流的做法是使用https协议 ,在http和tcp之间添加一层加密层(SSL层),这一层负责数据的加密和解密。
数据加签:数据加签 就是由发送者产生一段无法伪造的一段数字串,来保证数据在传输过程中不被篡改。数据在传输过程中经过加密,理论上就算被抓包,也无法对数据进行篡改,但是我们要知道加密的部分其实只是在外网,现在很多服务在内网中都需要经过很多服务跳转,所以这里的加签可以防止内网中数据被篡改。
时间戳机制:但是有不法者不关心真实的数据,而是直接拿到抓取的数据包进行恶意请求。这时候可以使用时间戳机制,在每次请求中加入当前的时间,服务器端会拿到当前时间和消息中的时间相减,看看是否在一个固定的时间范围内比如5分钟内。这样恶意请求的数据包是无法更改里面时间的,所以5分钟后就视为非法请求了。
AppId机制:大部分网站基本都需要用户名和密码才能登录,并不是谁来能使用我的网站,这其实也是一种安全机制。对应的对外提供的接口其实也需要这么一种机制,并不是谁都可以调用,需要使用接口的用户需要在后台开通appid,提供给用户相关的密钥。在调用的接口中需要提供 appid+密钥,服务器端会进行相关的验证。
限流机制:本来就是真实的用户,并且开通了appid,但是出现频繁调用接口的情况。这种情况需要给相关appid限流处理,常用的限流算法有令牌桶和漏桶算法。
黑名单机制:如果此appid进行过很多非法操作,或者说专门有一个中黑系统,经过分析之后直接将此appid列入黑名单,所有请求直接返回错误码。
数据合法性校验:这个可以说是每个系统都会有的处理机制,只有在数据是合法的情况下才会进行数据处理。每个系统都有自己的验证规则,当然也可能有一些常规性的规则,比如身份证长度和组成,电话号码长度和组成等等。